import pandas as pd
import matplotlib as mpl
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
# %matplotlib inline
stacked_bar_data = pd.read_csv("~/research/scripts/data/input/projects.csv")
stacked_bar_data["total"] = stacked_bar_data.Modules + stacked_bar_data.CoreProjects
#print(stacked_bar_data )
#Set general plot properties
#fig = plt.figure()
plt.figure(1)
sns.set_style("white")
sns.set_context({"figure.figsize": (20, 10)})
N = 20
ind = np.arange(N) # the x locations for the groups
plt.xticks(ind)
#Plot 1 - background - "total" (top) series
top_plot = sns.barplot(x = stacked_bar_data.Releases, y = stacked_bar_data.total, color = "#0000A3")
## Annotate bars with data points, [:] ==> select everything
for z in top_plot.patches[:]:
top_plot.annotate(np.round(-z.get_height(),decimals=6),(z.get_x()+z.get_width()/2.,-z.get_height()),ha='center',va='center',xytext=(0,10),textcoords='offset points', color='w')
#Plot 2 - overlay - "bottom" series
bottom_plot = sns.barplot(x = stacked_bar_data.Releases, y = stacked_bar_data.CoreProjects, color = "red")
## Annotate bars with data points, [:] ==> select everything
for p in bottom_plot.patches[:]:
bottom_plot.annotate(np.round(p.get_height(),decimals=6),(p.get_x()+p.get_width()/2.,p.get_height()),ha='center',va='center',xytext=(0,-10),textcoords='offset points', color='w')
topbar = plt.Rectangle((0,0),1,1,fc="#0000A3", edgecolor = 'none')
bottombar = plt.Rectangle((0,0),1,1,fc='red', edgecolor = 'none')
l = plt.legend([topbar,bottombar], ['Modules (sub-Projects)','Core Projects'],loc='upper left', shadow=True, ncol = 1, prop={'size':18})
l.draw_frame(True)
#ax.set(xlim=(-1, 25), ylim=(-1, 800))
plt.xticks(rotation=60)
plt.axis([None, None, None, None])
#Optional code - Make plot look nicer
sns.despine(left=False)
bottom_plot.set_ylabel("Core Projects / Modules (sub-Projects)", fontsize=28)
bottom_plot.set_xlabel("OpenStack Releases", labelpad=28)
#plt.suptitle('Projects and Libraries Managed by Release Team', fontsize=20)
#Set fonts to consistent 16pt size
for item in ([bottom_plot.xaxis.label, bottom_plot.yaxis.label] +
bottom_plot.get_xticklabels() + bottom_plot.get_yticklabels()):
item.set_fontsize(28)
#plt.savefig("releases60.png", bbox_inches='tight')
df = pd.read_csv("./models.csv")
df["strategies"].unique()
df["strategies"].describe()
df["strategies"].value_counts()
df["releases"].value_counts()
df1 = df[['delivrables', 'releases', 'strategies']].groupby(['releases', 'strategies']).count()
df1
####### df1.to_csv("openstack_releases_model.csv")
# # Import Data
# df1 = pd.read_csv("filtered_releases.csv")
# df1['strategies'].describe()
# #df1.to_latex(index=True)
# libraries
import numpy as np
import matplotlib.pyplot as plt
# set width of bar
barWidth = 0.25
# set height of bar
mitaka = [48, 100, 84, 36, 48, 52, 80, 76, 40]
queens = [44, 100, 72, 40, 40, 56, 84, 80, 48]
#bars3 = [29, 3, 24, 25, 17]
# Set position of bar on X axis
r1 = np.arange(len(mitaka))
r2 = [x + barWidth for x in r1]
#r3 = [x + barWidth for x in r2]
# Make the plot
plt.bar(r1, mitaka, color='black', width=barWidth, edgecolor='white', label='Mitaka')
plt.bar(r2, queens, color='red', width=barWidth, edgecolor='white', label='Queens')
#plt.bar(r3, bars3, color='#2d7f5e', width=barWidth, edgecolor='white', label='var3')
# Add xticks on the middle of the group bars
plt.ylabel('% Activities', fontsize='14')
plt.xlabel('Release synchronization activities', fontsize='14') #, fontweight='bold'
plt.xticks([r + barWidth for r in range(len(mitaka))], ['A1.', 'A2.',
'A3.', 'A4.',
'A5.', 'A6.',
'A7.', 'A8.',
'A9.'], rotation=0)
# Create legend & Show graphic
plt.legend()
plt.savefig("bar_activities.pdf",dpi=120, bbox_inches='tight')
plt.show()
!open .
# var = df.groupby(['BMI','Gender']).Sales.sum()
# var.unstack().plot(kind='bar',stacked=True, color=['red','blue'], grid=False)
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv("./filtered_releases.csv")
var = df.groupby(['releases','strategies']).deliverables.sum()
var.unstack().plot(kind='bar',stacked=True, color=['red','blue','grey','green','orange'], grid=False)
plt.yticks(fontsize=18)
plt.xticks(fontsize=22)
plt.xticks(rotation=60)
#plt.axis([-1, 22, -10, 310])
l = plt.legend(loc='upper left', shadow=True, ncol = 1, prop={'size':18})
l.draw_frame(True)
#Optional code - Make plot look nicer
plt.ylabel("#Projects per Release Strategies \n Coordinated by Release team", fontsize=28)
plt.xlabel("OpenStack Releases", fontsize=28)
plt.show()
## GNOME
### !pip install brewer2mpl
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings; warnings.filterwarnings(action='once')
from pandas.plotting import parallel_coordinates
large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
'legend.fontsize': med,
'figure.figsize': (16, 10),
'axes.labelsize': med,
'axes.titlesize': med,
'xtick.labelsize': med,
'ytick.labelsize': med,
'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
%matplotlib inline
%matplotlib inline
mpl.rcParams['figure.figsize'] = [12.0, 8.0]
# Version
print(mpl.__version__) #> 3.0.0
print(sns.__version__) #> 0.9.0
#### !cat ~/Desktop/planning_tracking.csv | cut -d':' -f 1 | cut -d'-' -f 2,3 | cut -d'/' -f 2 | tr "-" "," > Gnome_planning_management.csv
# Import Data
## df = pd.read_csv("Gnome_planning_management.csv")
## df1 = df[['month', 'year']].groupby(['year', 'month']).size().reset_index(name='counts')
## df1.to_csv("gnome_planned_schedule.csv")
x must have 2 complete cycles requires 60 observations. x only has 23 observation(s)
import statsmodels.api as sm
from collections import Mapping
df = pd.read_csv("./gnome_data/a1.release_strategies.csv") # planning_frequency.csv a1.planing_tracking_gnome.csv
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [25.0, 10.0]
# Import Data
import numpy as np
import matplotlib as mpl
df = pd.read_csv('./gnome_data/a1.release_strategies.csv') # ./gnome_data/a1.planing_tracking_gnome.csv
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
# Draw Plot
plt.figure(figsize=(12,7), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A1. Release Strategies')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+15, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-35, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-20,200)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# # Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a1.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
from collections.abc import Mapping
df = pd.read_csv("gnome_data/a2.planing_tracking.csv") # planning_frequency.csv a2.planning_frequency.csv
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [25.0, 10.0]
# Import Data
import numpy as np
import matplotlib as mpl
df = pd.read_csv('gnome_data/a2.planing_tracking.csv') # ./gnome_data/a2.planning_frequency.csv
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
# Draw Plot
plt.figure(figsize=(12,7), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A2. Planning & Tracking')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+15, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-35, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-20,200)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# # Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a2.pdf", dpi=120, bbox_inches='tight')
plt.show()
###### Import Data
###### df = pd.read_csv("dependency.csv")
###### df1 = df[['month', 'year']].groupby(['year', 'month']).size().reset_index(name='counts')
###### df1.to_csv("a3.dependency.csv")
import statsmodels.api as sm
from collections import Mapping
df = pd.read_csv("gnome_data/a3.dependency.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a3.dependency.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A3. Dependency Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-2,350)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a3.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
import collections.abc
df = pd.read_csv("gnome_data/a4.trusted_liaisons.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a4.trusted_liaisons.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A4. Trusted Liaisons')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-2,95)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a4.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
import collections.abc
df = pd.read_csv("gnome_data/a5.communication.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a5.communication.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A5. Communication Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-2,60)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a5.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
df = pd.read_csv("gnome_data/a6.stabilization.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
import numpy as np
import matplotlib as mpl
df = pd.read_csv("gnome_data/a6.stabilization.csv")
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A6. Release Stabilization')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+5, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-5, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-2,150)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a6.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
df = pd.read_csv("gnome_data/a7.tooling_and_automation.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a7.tooling_and_automation.csv")
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
# Draw Plot
plt.figure(figsize=(12,5), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A7. Tools & Automation')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+15, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-35, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-5,120)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# # Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a7.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
df = pd.read_csv("gnome_data/a8.central_repo.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a8.central_repo.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A8. Consolidation Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+5, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-5, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-2,60)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a8.pdf", dpi=120, bbox_inches='tight')
plt.show()
###### Import Data
# df = pd.read_csv("gnome_data/gnome_stable_main.csv")
# df1 = df[['month', 'year']].groupby(['year', 'month']).size().reset_index(name='counts')
# df1.to_csv("gnome_data/a9.stsble_m.csv")
import statsmodels.api as sm
df = pd.read_csv("gnome_data/a9.stable_m.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a9.stable_m.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A9. Stable Maintenance')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+5, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-5, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-2,210)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a9.pdf", dpi=120, bbox_inches='tight')
plt.show()
release-team/2011-August/msg00027.html:Highlights of this release
# ###### Import Data
# df = pd.read_csv("gnome_data/gnome_cycle.csv")
# df1 = df[['month', 'year']].groupby(['year', 'month']).size().reset_index(name='counts')
# df1.to_csv("gnome_data/a10.gnome_cycle.csv")
import statsmodels.api as sm
df = pd.read_csv("gnome_data/a10.gnome_cycle.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("gnome_data/a10.gnome_cycle.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A10. Cycle Highlights')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Annotate
# for t, p in zip(trough_locations[1::5], peak_locations[::3]):
# plt.text(df.timing[p], df.frequency[p]+5, df.timing[p], horizontalalignment='center', color='darkgreen')
# plt.text(df.timing[t], df.frequency[t]-5, df.timing[t], horizontalalignment='center', color='darkred')
# # Decoration
plt.ylim(-2,105)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("gnome_data/a10.pdf", dpi=120, bbox_inches='tight')
plt.show()
Data set source: https://www.eclipse.org/lists/platform-releng-dev/index.html
### !pip install brewer2mpl
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings; warnings.filterwarnings(action='once')
from pandas.plotting import parallel_coordinates
large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
'legend.fontsize': med,
'figure.figsize': (16, 10),
'axes.labelsize': med,
'axes.titlesize': med,
'xtick.labelsize': med,
'ytick.labelsize': med,
'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
%matplotlib inline
%matplotlib inline
mpl.rcParams['figure.figsize'] = [12.0, 8.0]
# Version
print(mpl.__version__) #> 3.0.0
print(sns.__version__) #> 0.9.0
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a1.release_strategy.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a1.release_strategy.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A1. Release Strategy')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,250)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a1.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a2.tracking_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a2.tracking_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A2. Planning n Tracking')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,250)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a2.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a3.dependency_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a3.dependency_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A3. Dependency Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,250)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a3.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a4.liaisons.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a4.liaisons.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A4. Trusted Liaisons')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,110)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a4.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a5.comm_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a5.comm_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A5. Communication Channel')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,200)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a5.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a6.stabilization_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a6.stabilization_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A6. Stabilization Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,120)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a6.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a7.automation.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a7.automation.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A7. Automation Management')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-10,120)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a7.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a8.consolidation.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a8.consolidation.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A8. Release Consolidation')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-5,165)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a8.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a9.stable_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a9.stable_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A9. Stable Maintenance')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-5,250)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a9.pdf", dpi=120, bbox_inches='tight')
plt.show()
import statsmodels.api as sm
#import collections.abc
from collections import Mapping
df = pd.read_csv("eclipse_data/a10.highligh_eclipse.csv")
decomposition = sm.tsa.seasonal_decompose(df.frequency, model = 'additive', period=30)
fig = decomposition.plot()
mpl.rcParams['figure.figsize'] = [16.0, 10.0]
# Prepare Data
df = pd.read_csv("eclipse_data/a10.highligh_eclipse.csv")
import numpy as np
import matplotlib as mpl
# Get the Peaks and Troughs
data = df['frequency'].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1
doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1
fig, ax = plt.subplots(1,1,figsize=(12,5), dpi= 80)
# Draw Plot
#plt.figure(figsize=(16,10), dpi= 80)
plt.plot('timing', 'frequency', data=df, color='tab:olive', label='A10. Cycle Highlights')
plt.scatter(df.timing[peak_locations], df.frequency[peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df.timing[trough_locations], df.frequency[trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')
# # Decoration
plt.ylim(-5,150)
xtick_location = df.index.tolist()[::6]
xtick_labels = df.timing.tolist()[::6]
plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=90, fontsize=12, alpha=.7)
# plt.title("Peak and Troughs of Air Passengers Traffic (1949 - 1969)", fontsize=22)
plt.yticks(fontsize=12, alpha=.7)
# Lighten borders
plt.gca().spines["top"].set_alpha(.0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.0)
plt.gca().spines["left"].set_alpha(.3)
#ax.set_xticklabels(df['timing'], rotation=90, fontdict={'fontsize':12})
plt.plot(df.index, df['frequency'], c='olive')
plt.plot(decomposition.trend.index, decomposition.trend, c='blue',linewidth=4, markersize=5)
plt.legend(loc='upper left')
plt.grid(axis='y', alpha=.3)
plt.savefig("eclipse_data/a10.pdf", dpi=120, bbox_inches='tight')
plt.show()
However, individual module maintainers coordinate their efforts to create a full GNOME stable release on an approximately six-month schedule, alongside its underlying libraries such as GTK and GLib. Some experimental projects are excluded from these releases.
GNOME version numbers follow the scheme v.xx.yy. Here, v is a major version, which can include large changes such as ABI breakage; these have no regular schedule and occur in response to requirements for large-scale changes. xx is a minor version, released on the above schedule of approximately every 6 months, in which the 1- or 2-digit number's parity indicates the type of release: if xx is even (e.g. 3.20) the release is considered stable, whereas if xx is odd it represents a current development snapshot (e.g. 3.21) that will eventually evolve into the next stable release. yy indicates a point release, e.g. 3.20.6; these are made on a frequency of weeks in order to fix issues, add non-breaking enhancements, etc.
GNOME releases are made to the main FTP server in the form of source code with configure scripts, which are compiled by operating system vendors and integrated with the rest of their systems before distribution. Most vendors only use stable and tested versions of GNOME, and provide it in the form of easily installed, pre-compiled packages. The source code of every stable and development version of GNOME is stored in the GNOME git source code repository. Interested users can always obtain a snapshot of the master development branch or any other branch/tag and build a cutting-edge version for their own use.
A number of build-scripts (such as JHBuild or formerly GARNOME) are available to help automate the process of compiling the source code.
Release Team Activities: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr/contribute/project_roles.html
Project roadmaps and release plans are both important tools for the project, but they have very different purposes and should not be confused. A project roadmap communicates the high-level overview of a project’s strategy, while a release plan is a tactical document designed to capture and track the features planned for upcoming releases.
The project roadmap communicates the why; a release plan details the what A release plan spans only a few months; a product roadmap might cover a year or more
The Zephyr project releases on a time-based cycle, rather than a feature-driven one. Zephyr releases represent an aggregation of the work of many contributors, companies, and individuals from the community.
A time-based release process enables the Zephyr project to provide users with a balance of the latest technologies and features and excellent overall quality. A roughly 3-month release cycle allows the project to coordinate development of the features that have actually been implemented, allowing the project to maintain the quality of the overall release without delays because of one or two features that are not ready yet.
The Zephyr release model is loosely based on the Linux kernel model:
The release plan comes into play when the project roadmap’s high-level strategy is translated into an actionable plan built on specific features, enhancements, and fixes that need to go into a specific release or milestone.
The release plan communicates those features and enhancements slated for your project’ next release (or the next few releases). So it acts as more of a project plan, breaking the big ideas down into smaller projects the community and main stakeholders of the project can make progress on.
Items labeled as features are short or long term release items that shall have an assignee and a milestone set.
The following graphic shows the timeline of phases and milestones associated with each release:
This shows how the phases and milestones of one release overlap with those of the next release:
This section documents the Release manager responsibilities so that it serves as a knowledge repository for Release managers.
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr/guides/modules.html#modules
Install Linux Host Dependencies ...e for these Linux distributions: Ubuntu Fedora Clear Linux Arch Linux For distributions that are not based on rolling releases, some of the requirements and dependencies may not be met by your package manager. In that case please follow t...
Communication and Collaboration
The Zephyr project mailing lists are used as the primary communication tool by project members, contributors, and the community. The mailing list is open for topics related to the project and should be used for collaboration among team members working on the same feature or subsystem or for discussing project direction and daily development of the code base. In general, bug reports and issues should be entered and tracked in the bug tracking system (GitHub Issues) and not broadcasted to the mailing list, the same applies to code reviews. Code should be submitted to GitHub using the appropriate tools.
Each release period will consist of a merge window period followed by one or more release candidates on which only stabilization changes, bug fixes, and documentation can be merged in.
Merge window mode: all changes are accepted (subject to approval from the respective maintainers.) When the merge window is closed, the release owner lays a vN-rc1 tag and the tree enters the release candidate phase CI sees the tag, builds and runs tests; QA analyses the report from the build and test run and gives an ACK/NAK to the build The release owner, with QA and any other needed input, determines if the release candidate is a go for release If it is a go for a release, the release owner lays a tag release vN at the same point
Automation: Keep code base in a working and passing state (as per CI)
Presence of this tag allows generation of sensible output for “git describe” on master, as typically used for automated builds and CI tools.
A relatively straightforward discipline is followed with regard to the merging of patches for each release. At the beginning of each development cycle, the “merge window” is said to be open. At that time, code which is deemed to be sufficiently stable (and which is accepted by the development community) is merged into the mainline tree. The bulk of changes for a new development cycle (and all of the major changes) will be merged during this time.
Stable releases: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr/development_process/release_process.html?highlight=stable
[(release branches for maintenance after release tagging.)]
Example:
Zephyr 2.4.0 (Working Draft)
We are pleased to announce the release of Zephyr RTOS version 2.4.0.
Major enhancements with this release include:
Moved to using C99 integer types and deprecate Zephyr integer types. The Zephyr types can be enabled by Kconfig DEPRECATED_ZEPHYR_INT_TYPES option.
The following sections provide detailed lists of changes by component.
Netbean switched from feature based to time based: https://cwiki.apache.org/confluence/display/NETBEANS/Release+Schedule